/**
 * @file MagTwin.h
 * @author <NAME>
 * @date 2021-10-18
 * @brief 主窗口类
 * @details 主窗口类，继承自QMainWindow，实现了GUI的绘制、交互等功能
*/

#pragma once

#include <QMainWindow>
#include <QGraphicsView>
#include <QGraphicsScene>
#include <QList>

#include "GMesh.h"
#include "MeshOutput.h"
#include "MagGraphicsView.h"
#include "logger.h"

/**
 * @brief 主窗口类
 * 
 * 继承自QMainWindow，实现了GUI的绘制、交互等功能
*/
QT_BEGIN_NAMESPACE
namespace Ui {
    class MagTwin;
}
QT_END_NAMESPACE

class MagTwin : public QMainWindow
{
    Q_OBJECT
private:
    Ui::MagTwin* ui;
    GMesh* mesh = new GMesh();
    MagLogger maglog;
private:
    QList<int> MainWindowSplitterScale{1, 6};
    QList<int> ShowWindowSplitterScale{7, 1};
private:
    /**
     * @brief 初始化UI
    */
    void initUI();
    /**
     * @brief 加载动作
     * @details 加载菜单栏、工具栏、快捷键等
    */
    void loadingActions();
public:
    /**
     * @brief 构造函数
     * @param parent 父对象
    */
    MagTwin(QWidget *parent = nullptr);
    /**
     * @brief 析构函数
    */
    ~MagTwin();
    /**
     * @brief 画线
     * @param fileName 文件名
    */
    // void drawLine(const QPointF &startPoint, const QPointF &endPoint);
    /**
     * @brief 更新日志信息
    */
    void updateLog();
};

